/**
 * \file driver/net/dp8390.c
 * \author Davide Gessa
 * \date 12-05-2009
 */
#include "dp8390.h"
#include <types.h>


driver_t driver_dp8390 = 
{
	.name = "dp8390\0",
	.desc = "dp8390 network family chip\0",
	.author = "Davide Gessa\0",
	
	.probe = dp8390_probe
};



/**
 * 
 */
uint32_t dp8390_probe(device_t *dev)
{
	
}


/**
 * Invia un frame
 * 
 * \param frame buffer dati
 * \param size dimensione frame
 * \return byte inviati
 */
uint32_t dp8390_send_frame(char *frame, uint32_t size)
{
	
	return 0;
}



/**
 * Riceve un frame
 * 
 * \param frame buffer dati
 * \param size dimensione massima del frame
 * \return dimensione effettiva frame ricevuto (0 = nessun frame in coda)
 */
uint32_t dp8390_recv_frame(char *frame, uint32_t size)
{
	
	return 0;
}




/**
 * Callback dell'interrupt del dp8390
 */
static void dp8390_callback(regs_t *r)
{
	// Legge registri del nic
	
	ifrec:
	// Pacchetto ricevuto?
		// Reset prx bit del isr
		// Trasferisci il pacchetto dal chip al dma
		// Informa i livelli superiori dell'arrivo del pacchetto (con 1 flag)
		goto ifrec;
		
	iftrans:
		// Pacchetto da trasmettere?
		// Reset ptx bit del isr
		// Read transmit status reg
		// Informa i livelli superiori della trasmissione
		goto iftrans;
}
